/**
 * Created by Jessi on 2018/5/11.
 */
/**
 * 对象工具类，类中方法均为静态方法
 */
class ObjectUtils {
  /**
     * 判断参数是否为一个对象
     */
  static isObject(obj) {
    return toString.call(obj) === '[object Object]';
  }

  /**
     * obj_values(obj);
     * 获取对象中的所有的值，并返回数组
     * @param obj
     * @returns {Array}
     */
  static objValues(obj) {
    const objkey = Object.keys(obj);
    const objarr = [];
    objkey.forEach(key => {
      objarr.push(obj[key]);
    });
    return objarr;
  }

  /**
     * 判断对象是否相等
     * @param a
     * @param b
     * @returns {boolean}
     */
  static isObjectValueEqual(a, b) {
    var aProps = Object.getOwnPropertyNames(a);
    var bProps = Object.getOwnPropertyNames(b);

    if (aProps.length != bProps.length) {
      return false;
    }
    for (var i = 0; i < aProps.length; i++) {
      var propName = aProps[i];
      if (a[propName] !== b[propName]) {
        return false;
      }
    }
    return true;
  }

  /**
     * 获取对象中的所有的值，并返回数组
     * @param obj
     * @returns {Array}
     */
  static objValues(obj) {
    const objkey = Object.keys(obj);
    const objarr = [];
    objkey.forEach(key => {
      objarr.push(obj[key]);
    });
    return objarr;
  }
}

module.exports = ObjectUtils;